![]() | PROGRAMACIÓN ORIENTADA A EVENTOS |
〈( condición → acción )〉
(e = 〈( condición → acción )〉)
e
es el nombre del evento.
〈( condición → acción )〉
a
es un elemento del grupo (secuencia o conjunto) g
:
〈( a∈g → acción )〉
u
tiene un valor mayor que 1 y menor que 10:
〈( (u>1 → u<10) → acción )〉
g
contiene a
, b
o c
:
〈( {(a∈g)? (b∈g)? (c∈g)? }↓ → acción )〉
〈( {[([a b c]∈g)?]}↓ → acción )〉
s
pertenece a g
:
〈( {[s↓∈g)?]}↓ → acción )〉
a
pertenece a un grupo (secuencia o conjunto).
〈( (x = {x↓}) → a∈x → acción )〉
〈( (x# > 10) → acción )〉
〈( (x → y) → acción )〉
〈( (x ← y →' z) → acción )〉
〈( e(u v) = 〈( (a>u → a<v) → acción )〉 )〉 // definición evento
(e(3 9)) // activación del evento 〈( (a>3 → a<9) → acción )〉
〈( e(u v) = 〈( (x>u → x<v) → acción )〉 )〉 // definición evento
e(3 9) // activación evento 〈( (x>3 → x<9) → acción )〉
x
) y los externos (u
y v
).
x/〈e〉
x
la expresión potencial fuente (productora del evento) y 〈e〉
la expresión genérica que define el evento relativo.
(y = x*x + 7)/〈( y>1000 → (y = 1000) )〉
〈( f(x) = x*x )〉/〈( f(x)>1000 → (f(x) = 1000) )〉
( cond = (x>10)° ) // condición inicial
〈( cond → x=10 )〉 // definición del evento
(x = 20)
x // ev. 10
...
( cond = (2*x > 20)° ) // nueva condición
(x = 5)
x // ev. 5
( accion = (x=10)° ) // acción inicial
〈( x>10 → accion )〉 // definición del evento
(x = 20)
x // ev. 10
...
( accion = (x = 2*x)° ) // nueva acción
(x = 20)
x // ev. 40
( evento = (x>10 → x=10)° ) // evento inicial
〈( evento )〉 // definición del evento
(x = 20)
x // ev. 10
...
( evento = (x>20 → x=30)° ) // nuevo evento
(x = 25)
x // ev. 30
〈( θ → acción )〉
〈( condición → θ )〉
(cond = θ) // condición nula
〈( cond → acción )〉 // evento desactivado por condición nula
(accion = θ) // acción nula
〈( cond → accion )〉 // evento desactivado por acción nula
x
.
x
en xant
(x
anterior):
(xant = x)
x
, comparar el nuevo valor con el anterior y, si es diferente, guardar el nuevo valor y realizar la acción correspondiente:
〈( (x = v) → ((x ≠ xant) → ((xant = v) acción)) )〉
〈( (condición1 → acción1/evento2 )〉
〈( (x# > 10) → acción1/〈( x/1 > 100 → acción2 )〉 )〉
v
durante un proceso, no supere nunca el valor 10. Si es mayor, debe hacerse automáticamente igual a 10.
〈( v>10 → v=10 )〉
(v = 12)
v // ev. 10
s
de dos componentes, inicialmente con el valor (3 7)
, queremos que la suma sea siempre 10, de tal forma que el segundo componente se ajuste siempre al valor del primero.
(s = (3 7))
〈( (s\1 + s\2)10 → (s\2 = (10 – s\1)) )〉
(s\1 = 4)
s // ev. (4 6)
s
tenga más de dos componentes.
〈( (s# > 2) → (s = (s\1 s\2)) )〉
s=(a b c)
s // ev. (a b)
error
la expresión nula θ
si no hay error o un texto con el mensaje “Intento de división por cero en exp”, siendo exp
la expresión a la que se intenta aplicar la división por cero. A continuación, parar el proceso.
〈( (error = θ) ←' (x÷0) → ((error = "Intento de división por cero en " x) ■) )〉
x
sea de longitud mayor que 1000, impidiendo las asignaciones del tipo (x\i = y)
con i
mayor que 1000.
〈( ((x\i) = θ) ← i>1000 )〉